\section{R\'{e}f\'{e}rence du fichier debug.cpp}
\label{debug_8cpp}\index{debug.cpp@{debug.cpp}}
Fonctions d'erreur et de debug du compilateur. 

{\tt \#include $<$cstdlib$>$}\par
{\tt \#include $<$iostream$>$}\par
{\tt \#include \char`\"{}declarations.h\char`\"{}}\par
{\tt \#include \char`\"{}symbols.h\char`\"{}}\par
{\tt \#include \char`\"{}instructions.h\char`\"{}}\par
{\tt \#include \char`\"{}hashtable.h\char`\"{}}\par
{\tt \#include \char`\"{}debug.h\char`\"{}}\par


Graphe des d\'{e}pendances par inclusion de debug.cpp:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=250pt]{debug_8cpp__incl}
\end{center}
\end{figure}
\subsection*{Fonctions}
\begin{CompactItemize}
\item 
void {\bf error\-Warning} (string str)
\begin{CompactList}\small\item\em Erreur de type warning (niveau 1). \item\end{CompactList}\item 
void {\bf error\-Error} (string str)
\begin{CompactList}\small\item\em Erreur de type error (niveau 2). \item\end{CompactList}\item 
void {\bf error\-Fatal} (string str)
\begin{CompactList}\small\item\em Erreur de type fatal (niveau 3). \item\end{CompactList}\item 
void {\bf free\-Memory} ()
\begin{CompactList}\small\item\em Lib\`{e}re la m\'{e}moire pour quitter le programme proprement. \item\end{CompactList}\item 
int {\bf yyerror} (char $\ast$str)
\begin{CompactList}\small\item\em Fonction d'erreur de yacc/bison, on \char`\"{}redirige\char`\"{} l'erreur vers error\-Fatal. \item\end{CompactList}\item 
void {\bf set\-Debug\-Level} (int argc, char $\ast$$\ast$argv)
\begin{CompactList}\small\item\em Fixe le niveau de debug. \item\end{CompactList}\item 
void {\bf debug\-Echo} (string str)
\begin{CompactList}\small\item\em Affiche un message de debug. \item\end{CompactList}\item 
void {\bf debug\-Lexeme} (char $\ast$str)
\begin{CompactList}\small\item\em Affiche un lex\`{e}me lu,. \item\end{CompactList}\end{CompactItemize}
\subsection*{Variables}
\begin{CompactItemize}
\item 
{\bf CDecl\-Manager} $\ast$ {\bf decl\-Manager}
\begin{CompactList}\small\item\em Gestionnaire de d\'{e}clarations. \item\end{CompactList}\item 
{\bf CSymbol\-Stack} $\ast$ {\bf symbol\-Stack}
\begin{CompactList}\small\item\em Table des symboles. \item\end{CompactList}\item 
{\bf CInstr\-Queue} $\ast$ {\bf instr\-Queue}
\begin{CompactList}\small\item\em File d'instructions. \item\end{CompactList}\item 
{\bf CHash\-Table} $\ast$ {\bf hash\-Table}
\begin{CompactList}\small\item\em Table de hachage. \item\end{CompactList}\item 
int {\bf debug\-Level} = 0
\begin{CompactList}\small\item\em Niveau de debug. \item\end{CompactList}\item 
bool {\bf error\-Is\-Set} = false
\begin{CompactList}\small\item\em Permet de savoir s'il y a eu des erreurs ou non lors de la compilation. \item\end{CompactList}\end{CompactItemize}


\subsection{Description d\'{e}taill\'{e}e}
Fonctions d'erreur et de debug du compilateur. 



D\'{e}finition dans le fichier {\bf debug.cpp}.

\subsection{Documentation des fonctions}
\index{debug.cpp@{debug.cpp}!debugEcho@{debugEcho}}
\index{debugEcho@{debugEcho}!debug.cpp@{debug.cpp}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void debug\-Echo (string {\em str})}\label{debug_8cpp_3fc30a240b3c38ab9105578cd90e4c8f}


Affiche un message de debug. 



D\'{e}finition \`{a} la ligne 79 du fichier debug.cpp.

R\'{e}f\'{e}rences DEBUG\_\-MSG, et debug\-Level.

R\'{e}f\'{e}renc\'{e} par main().\index{debug.cpp@{debug.cpp}!debugLexeme@{debugLexeme}}
\index{debugLexeme@{debugLexeme}!debug.cpp@{debug.cpp}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void debug\-Lexeme (char $\ast$ {\em str})}\label{debug_8cpp_92c0a67c56eea87eb4eb1fd12ae95285}


Affiche un lex\`{e}me lu,. 



D\'{e}finition \`{a} la ligne 85 du fichier debug.cpp.

R\'{e}f\'{e}rences DEBUG\_\-LEXEMES, et debug\-Level.\index{debug.cpp@{debug.cpp}!errorError@{errorError}}
\index{errorError@{errorError}!debug.cpp@{debug.cpp}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void error\-Error (string {\em str})}\label{debug_8cpp_93241a0588f7cca23d9541cda89a8008}


Erreur de type error (niveau 2). 

Une erreur est envoy\'{e}e quand une partie du code source n'est pas interpr\'{e}table. Elle rend impossible la compilation finale, mais le code continue d'\^{e}tre analys\'{e}. 

D\'{e}finition \`{a} la ligne 36 du fichier debug.cpp.

R\'{e}f\'{e}rences error\-Is\-Set.

R\'{e}f\'{e}renc\'{e} par CSymbol::convert(), CSymbol::convert2(), process\-Aff(), process\-Deref(), process\-Div(), process\-Id(), process\-Mul(), et process\-Ref\-Aff().\index{debug.cpp@{debug.cpp}!errorFatal@{errorFatal}}
\index{errorFatal@{errorFatal}!debug.cpp@{debug.cpp}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void error\-Fatal (string {\em str})}\label{debug_8cpp_8424682c6ad56bb1a34681973ab7c1ab}


Erreur de type fatal (niveau 3). 

Lorsqu'une erreur fatal survient, le compilateur ne peut continuer son travail. Il lib\`{e}re la m\'{e}moire du mieux qu'il peut et quitte. 

D\'{e}finition \`{a} la ligne 42 du fichier debug.cpp.

R\'{e}f\'{e}rences free\-Memory().

R\'{e}f\'{e}renc\'{e} par yyerror().

Voici le graphe d'appel pour cette fonction:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=101pt]{debug_8cpp_8424682c6ad56bb1a34681973ab7c1ab_cgraph}
\end{center}
\end{figure}
\index{debug.cpp@{debug.cpp}!errorWarning@{errorWarning}}
\index{errorWarning@{errorWarning}!debug.cpp@{debug.cpp}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void error\-Warning (string {\em str})}\label{debug_8cpp_b5db15ebc73ce3978f1dda10b4156e22}


Erreur de type warning (niveau 1). 

Un warning pr\'{e}vient l'utilisateur d'une erreur possible ou d'une op\'{e}ration ill\'{e}gale mais que le compilateur a tout de m\^{e}me pu analyser. Apr\`{e}s un warning, le code continue \`{a} \^{e}tre analys\'{e} et la compilation est toujours possible. 

D\'{e}finition \`{a} la ligne 31 du fichier debug.cpp.

R\'{e}f\'{e}renc\'{e} par CDecl\-Manager::declare(), process\-Add(), et process\-Sub().\index{debug.cpp@{debug.cpp}!freeMemory@{freeMemory}}
\index{freeMemory@{freeMemory}!debug.cpp@{debug.cpp}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void free\-Memory ()}\label{debug_8cpp_6fb3812c2de66e8962b6dee5144ffb03}


Lib\`{e}re la m\'{e}moire pour quitter le programme proprement. 



D\'{e}finition \`{a} la ligne 49 du fichier debug.cpp.

R\'{e}f\'{e}rences decl\-Manager, hash\-Table, instr\-Queue, et symbol\-Stack.

R\'{e}f\'{e}renc\'{e} par error\-Fatal(), et main().\index{debug.cpp@{debug.cpp}!setDebugLevel@{setDebugLevel}}
\index{setDebugLevel@{setDebugLevel}!debug.cpp@{debug.cpp}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void set\-Debug\-Level (int {\em argc}, char $\ast$$\ast$ {\em argv})}\label{debug_8cpp_2dd74ef7c3e1afc8208a65e5bebbc3ae}


Fixe le niveau de debug. 

-d : afficher les messages de debug -l : afficher les lex\`{e}mes lus 

D\'{e}finition \`{a} la ligne 66 du fichier debug.cpp.

R\'{e}f\'{e}rences DEBUG\_\-LEXEMES, DEBUG\_\-MSG, et debug\-Level.

R\'{e}f\'{e}renc\'{e} par main().\index{debug.cpp@{debug.cpp}!yyerror@{yyerror}}
\index{yyerror@{yyerror}!debug.cpp@{debug.cpp}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int yyerror (char $\ast$ {\em str})}\label{debug_8cpp_a95fedf9a13c21bea1338142abefcb5a}


Fonction d'erreur de yacc/bison, on \char`\"{}redirige\char`\"{} l'erreur vers error\-Fatal. 



D\'{e}finition \`{a} la ligne 58 du fichier debug.cpp.

R\'{e}f\'{e}rences error\-Fatal().

R\'{e}f\'{e}renc\'{e} par yyparse().

Voici le graphe d'appel pour cette fonction:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=144pt]{debug_8cpp_a95fedf9a13c21bea1338142abefcb5a_cgraph}
\end{center}
\end{figure}


\subsection{Documentation des variables}
\index{debug.cpp@{debug.cpp}!debugLevel@{debugLevel}}
\index{debugLevel@{debugLevel}!debug.cpp@{debug.cpp}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int {\bf debug\-Level} = 0}\label{debug_8cpp_41ff73c3328a84f17007d4d352490cb5}


Niveau de debug. 



D\'{e}finition \`{a} la ligne 21 du fichier debug.cpp.

R\'{e}f\'{e}renc\'{e} par debug\-Echo(), debug\-Lexeme(), et set\-Debug\-Level().\index{debug.cpp@{debug.cpp}!declManager@{declManager}}
\index{declManager@{declManager}!debug.cpp@{debug.cpp}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}{\bf CDecl\-Manager}$\ast$ {\bf decl\-Manager}}\label{debug_8cpp_ce86f2e4114643166d259a3ffa84c809}


Gestionnaire de d\'{e}clarations. 



D\'{e}finition \`{a} la ligne 156 du fichier y.tab.c.

R\'{e}f\'{e}renc\'{e} par CSymbol::CSymbol(), free\-Memory(), main(), process\-Add(), process\-Aff(), process\-Deref(), process\-Div(), process\-Eql(), process\-Grt(), process\-Low(), process\-Mul(), process\-Neq(), process\-Not(), process\-Op1And(), process\-Op1Or(), process\-Op2And(), process\-Op2Or(), process\-Ref(), process\-Ref\-Aff(), process\-Sub(), CSymbol\-Stack::restore\-Context(), et yyparse().\index{debug.cpp@{debug.cpp}!errorIsSet@{errorIsSet}}
\index{errorIsSet@{errorIsSet}!debug.cpp@{debug.cpp}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}bool {\bf error\-Is\-Set} = false}\label{debug_8cpp_dd316a24d89a05fa324e21e820c92ef5}


Permet de savoir s'il y a eu des erreurs ou non lors de la compilation. 

Permet par la suite au programme de savoir s'il doit g\'{e}n\'{e}rer le code 3 adresse. 

D\'{e}finition \`{a} la ligne 28 du fichier debug.cpp.

R\'{e}f\'{e}renc\'{e} par error\-Error(), et main().\index{debug.cpp@{debug.cpp}!hashTable@{hashTable}}
\index{hashTable@{hashTable}!debug.cpp@{debug.cpp}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}{\bf CHash\-Table}$\ast$ {\bf hash\-Table}}\label{debug_8cpp_81186a359a7373cde3738366fe1a59a2}


Table de hachage. 



D\'{e}finition \`{a} la ligne 159 du fichier y.tab.c.

R\'{e}f\'{e}renc\'{e} par free\-Memory(), et main().\index{debug.cpp@{debug.cpp}!instrQueue@{instrQueue}}
\index{instrQueue@{instrQueue}!debug.cpp@{debug.cpp}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}{\bf CInstr\-Queue}$\ast$ {\bf instr\-Queue}}\label{debug_8cpp_018fd924b6a5f2010c8833b540f1a15b}


File d'instructions. 



D\'{e}finition \`{a} la ligne 157 du fichier y.tab.c.

R\'{e}f\'{e}renc\'{e} par free\-Memory(), main(), process\-Cond\-End(), process\-Const\-Bool(), process\-Const\-Float(), process\-Const\-Int(), process\-Div(), process\-Else(), process\-Eql(), process\-Goto(), process\-Goto\-New(), process\-Grt(), process\-If\-Not(), process\-Label(), process\-Label\-New(), process\-Low(), process\-Mul(), process\-Neq(), process\-Ref(), process\-Repeat\-Until\-End(), et process\-While\-Do\-End().\index{debug.cpp@{debug.cpp}!symbolStack@{symbolStack}}
\index{symbolStack@{symbolStack}!debug.cpp@{debug.cpp}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}{\bf CSymbol\-Stack}$\ast$ {\bf symbol\-Stack}}\label{debug_8cpp_59011096c65c6f2160f0f780799ef507}


Table des symboles. 



D\'{e}finition \`{a} la ligne 158 du fichier y.tab.c.

R\'{e}f\'{e}renc\'{e} par CDecl\-Manager::declare(), free\-Memory(), main(), process\-Aff(), process\-Id(), process\-Ref(), et yyparse().